package org.liang.job;

import java.util.List;

import org.liang.job.beans.Group;

/**
 * 任务组、触发器组维护器 行为接口.
 * 
 * <pre>
 * 抽象任务组，触发器组共同行为：
 *  1. 判断组名称是否已经存在
 *  2. 添加 组
 *  3. 根据编号删除任务组
 *  4. 根据编号删除组（批量）
 *  5. 根据id更新组名称
 *  6. 获取所有组信息
 *  7. 根据名称查询组信息（模糊查询）
 * </pre>
 *
 * @author L.Yang
 * @version 1.0, 2015年10月16日
 */
public interface GroupManager {

    /**
     * 判断组名称是否已经存在.
     * 
     * @param name
     *            组名称
     * @return 是否已存在
     */
    boolean checkExistenceByName(String name);

    /**
     * 添加 组.
     * 
     * @param name
     *            组名称
     */
    void add(String name);

    /**
     * 根据编号删除组.<br>
     * 如果组编号被任务引用，则不可删除。
     * 
     * @param id
     *            任务组编号
     * @return 是否删除成功
     */
    boolean delete(String id);

    /**
     * 根据编号删除组.<br>
     * 如果组编号被引用，则不可删除。
     * 
     * @param id
     *            组编号
     * @return 返回删除失败编号
     */
    List<String> delete(List<String> ids);

    /**
     * 根据id更新组名称.
     * 
     * @param id
     *            编号
     * @param name
     *            名称
     * @return 是否更新成功
     */
    boolean update(String id, String name);

    /**
     * 获取所有组信息.
     * 
     * @return 所有组信息
     */
    List<Group> queryAll();

    /**
     * 根据名称查询组信息（模糊查询）.
     * 
     * @return 组信息
     */
    List<Group> queryByName(String name);
}
